#ifndef __kraw_Resource_h__
#define __kraw_Resource_h__

#include <string>

namespace kraw
{
	class AssetLoader;
	class Resource
	{
	public:
		Resource(AssetLoader *);
		virtual ~Resource();

		std::string getName();

		bool load();
		void unload();
		bool loaded();

		void retain();
		void release();

	protected:
		virtual bool doLoad();
		virtual void doUnload();

		AssetLoader* loader;
		bool isLoaded;
		int refCount;
		int memorySize;
	};
}

#endif
